21786
19919
Denna fråges svar är ett samhällsarbete. Redigera befintliga svar för att förbättra det här inlägget. Det accepterar för närvarande inte nya svar eller interaktioner.
Hur kan jag omdirigera användaren från en sida till en annan med jQuery eller ren JavaScript? 
1
2
Nästa
Man omdirigerar inte bara med jQuery
jQuery är inte nödvändigt och window.location.replace (...) simulerar bäst en HTTP-omdirigering.
window.location.replace (...) är bättre än att använda window.location.href, eftersom ersätt () inte behåller den ursprungliga sidan i sessionshistoriken, vilket innebär att användaren inte fastnar i en oändlig bak knappen fiasko.
Om du vill simulera någon som klickar på en länk, använd
location.href
Om du vill simulera en HTTP-omdirigering, använd location.replace
Till exempel:
// liknande beteende som en HTTP-omdirigering
window.location.replace ("http://stackoverflow.com");
// liknande beteende som att klicka på en länk
window.location.href = "http://stackoverflow.com";
|
VARNING: Detta svar har bara tillhandahållits som en möjlig lösning; det är uppenbarligen inte den bästa lösningen, eftersom det kräver jQuery. Föredrar istället den rena JavaScript-lösningen.
$ (plats) .attr ('href', 'http://stackoverflow.com')
|
Standard "vanilj" JavaScript-sätt att omdirigera en sida
window.location.href = 'newPage.html';
Eller enklare: (eftersom fönstret är globalt)
location.href = 'newPage.html';
Om du är här för att du tappar HTTP_REFERER när du omdirigerar, fortsätt läsa:
(I annat fall ignorera den sista delen)
Följande avsnitt är för dem som använder HTTP_REFERER som en av många säkerhetsåtgärder (även om det inte är en bra skyddsåtgärd). Om du använder Internet Explorer 8 eller lägre försvinner dessa variabler när du använder någon form av JavaScript-omdirigering (location.href, etc.).
Nedan ska vi implementera ett alternativ för IE8 & lägre så att vi inte förlorar HTTP_REFERER. Annars kan du nästan alltid helt enkelt använda window.location.href.
Testning mot HTTP_REFERER (URL-klistrning, session, etc.) kan hjälpa till att avgöra om en begäran är legitim.
(Obs! Det finns också sätt att kringgå / förfalska dessa hänvisare, som noteras av droops länk i kommentarerna)
Enkel testlösning för webbläsare (fallback till window.location.href för Internet Explorer 9+ och alla andra webbläsare)
Användning: omdirigering ('anotherpage.aspx');
funktion omdirigering (url) {
var ua = navigator.userAgent.toLowerCase (),
isIE = ua.indexOf ('msie')! == -1,
version = parseInt (ua.substr (4, 2), 10);
// Internet Explorer 8 och lägre
if (isIE && version <9) {
var länk = document.createElement ('a');
link.href = url;
document.body.appendChild (länk);
link.click ();
}
// Alla andra webbläsare kan använda standardfönstret.location.href (de tappar inte HTTP_REFERER som Internet Explorer 8 och lägre gör)
annat {
window.location.href = url;
}
}
|
Det finns många sätt att göra detta.
// window.location
window.location.replace ('http://www.example.com')
window.location.assign ('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/ sökväg'
// fönster.historia
window.history.back ()
window.history.go (-1)
// window.navigate; ENDAST för gamla versioner av Internet Explorer
window.navigate ('top.jsp')
// Förmodligen ingen bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';
// jQuery
$ (plats) .attr ('href', 'http: //www.example.com')
$ (fönster) .attr ('location', 'http: //www.example.com')
$ (plats). prop ('href', 'http://www.example.com')
|
Detta fungerar för alla webbläsare:
window.location.href = 'din_url';
|
Det skulle hjälpa om du var lite mer beskrivande i vad du försöker göra. Om du försöker skapa siddata finns det några alternativ för hur du gör det. Du kan skapa separata länkar för varje sida som du vill kunna komma direkt till.
 1 
 2 
 3 
...
Observera att den aktuella sidan i exemplet hanteras annorlunda i koden och med CSS.
Om du vill att de sökta uppgifterna ska ändras via AJAX är det här jQuery skulle komma in. Vad du skulle göra är att lägga till en klickhanterare till var och en av ankartaggarna som motsvarar en annan sida. Denna klickhanterare skulle åberopa någon jQuery-kod som går och hämtar nästa sida via AJAX och uppdaterar tabellen med de nya uppgifterna. Exemplet nedan förutsätter att du har en webbtjänst som returnerar den nya sidinformationen.
$ (dokument). klar (funktion () {
$ ('a.pager-link'). klicka (funktion () {
var sida = $ (detta) .attr ('href'). split (/ \? /) [1];
$ .ajax ({
typ: 'POST',
url: '/ path-to-service',
data: sida,
framgång: funktion (innehåll) {
$ ('# myTable'). html (innehåll); // byta ut
}
});
returnera falsk; // för att stoppa länken
});
});
|
Jag tycker också att location.replace (URL) är det bästa sättet, men om du vill meddela sökmotorerna om din omdirigering (de analyserar inte JavaScript-koden för att se omdirigeringen) bör du lägga till rel = "canonical" meta tagg till din webbplats.
Att lägga till ett noscript-avsnitt med en HTML-metatagg i är också en bra lösning. Jag föreslår att du använder detta JavaScript-omdirigeringsverktyg tillskapa omdirigeringar. Det har också Internet Explorer-stöd för att skicka HTTP-referrer.
Exempelkod ser utan dröjsmål så här ut:







  



|
Men om någon vill omdirigera tillbaka till hemsidan kan han använda följande kodavsnitt.
window.location = window.location.host
Det skulle vara till hjälp om du har tre olika miljöer som utveckling, iscensättning och produktion.
Du kan utforska det här fönstret eller fönstret.location-objekt genom att bara lägga dessa ord i Chrome Console eller Firebugs Console.
|
JavaScript ger dig många metoder för att hämta och ändra den aktuella webbadressen som visas i webbläsarens adressfält. Alla dessa metoder använder platsobjektet, som är en egenskap för fönsterobjektet. Du kan skapa ett nytt platsobjekt som har den aktuella webbadressen enligt följande ...
var currentLocation = window.location;
Grundläggande struktur för en URL
//:/ 
Protokoll - Anger det protokollnamn som ska användas för att komma åt resursen på Internet. (HTTP (utan SSL) eller HTTPS (med SSL))
värdnamn - Värdnamn anger värden som äger resursen. Till exempel www.stackoverflow.com. En server tillhandahåller tjänster med värdens namn.
port - Ett portnummer som används för att känna igen en specifik process till vilken ett Internet- eller annat nätverksmeddelande ska vidarebefordras när det anländer till en server.
sökvägen - Sökvägen ger information om den specifika resursen inom värden som webbklienten vill komma åt. Till exempel stackoverflow.com/index.html.
fråga - En frågesträng följer sökkomponenten och ger en informationssträng som resursen kan använda för något ändamål (till exempel som parametrar för en sökning eller som data som ska bearbetas).
hash - Ankardelen av en URL innehåller hash-tecknet (#).
Med dessa egenskaper för platsobjekt kan du komma åt alla dessa URL-komponenter
hash-Ställer in eller returnerar ankardelen av en URL.
värd -uppsättningar
eller returnerar värdnamn och port för en URL.
värdnamn -Set eller
returnerar värdnamnet på en URL.
href - Ställer in eller returnerar hela
URL.
sökväg - Ställer in eller returnerar sökvägen till en URL.
port - Ställer in eller returnerar det portnummer som servern använder för en URL.
protokoll - Ställer in eller returnerar protokollet för en URL.
sök -Set
eller returnerar frågedelen av en URL
Nu Om du vill ändra en sida eller omdirigera användaren till någon annan sida kan du använda href-egenskapen för platsobjektet så här
Du kan använda egenskapen href för platsobjektet.
window.location.href = "http://www.stackoverflow.com";
Platsobjekt har också dessa tre metoder
assign () - Läser in ett nytt dokument.
reload () - Ladda om det aktuella dokumentet.
ersätt () - Ersätter det aktuella dokumentet med ett nytt
Du kan använda tilldela () och ersätta metoder för att omdirigera till andra sidor som dessa
location.assign ("http://www.stackoverflow.com");
location.replace ("http://www.stackoverflow.com");
Hur tilldelar () och ersätter () skiljer sig - Skillnaden mellan ersätt () -metoden och tilldela () -metoden () är att ersätta () tar bort webbadressen till det aktuella dokumentet från dokumenthistoriken, betyder att det inte är möjligt att använda knappen "tillbaka" för att navigera tillbaka till originaldokumentet. Så använd metoden alloc () om du vill ladda ett nytt dokument och vill ge möjlighet att navigera tillbaka till originaldokumentet.
Du kan ändra platsobjektets href-egenskap med jQuery också så här
$ (plats) .attr ('href', url);
Och därför kan du omdirigera användaren till någon annan webbadress.
|
I grund och botten är jQuery bara ett JavaScript-ramverk och för att göra några av sakerna som omdirigering i det här fallet kan du bara använda ren JavaScript, så i så fall har du 3 alternativ med vaniljJavaScript:
1) Om du använder platsbyte kommer detta att ersätta den aktuella historiken på sidan, vilket innebär att det inte går att använda tillbaka-knappen för att gå tillbaka till originalsidan.
window.location.replace ("http://stackoverflow.com");
2) Med hjälp av platstilldelning kommer detta att hålla historiken åt dig och med hjälp av bakåtknappen kan du gå tillbaka till originalsidan:
window.location.assign ("http://stackoverflow.com");
3) Jag rekommenderar att du använder ett av de tidigare sätten, men detta kan vara det tredje alternativet med ren JavaScript:
window.location.href = "http://stackoverflow.com";
Du kan också skriva en funktion i jQuery för att hantera den, men rekommenderas inte eftersom den bara är en ren JavaScript-funktion, du kan också använda alla ovanstående funktioner utan fönster om du redan är i fönsteromfånget, till exempel window.location.replace ("http://stackoverflow.com"); kan vara location.replace ("http://stackoverflow.com");
Jag visar dem alla också på bilden nedan:
|
Bör bara kunna ställa in med hjälp av window.location.
Exempel:
window.location = "https://stackoverflow.com/";
Här är ett tidigare inlägg om ämnet: Hur omdirigerar jag till en annan webbsida?
|
Innan jag börjar är jQuery ett JavaScript-bibliotek som används för DOM-manipulation. Så du borde inte använda jQuery för en sidomdirigering.
Ett citat från Jquery.com:
Medan jQuery kan köras utan större problem i äldre webbläsarversioner,
vi testar inte aktivt jQuery i dem och fixar vanligtvis inte buggar
som kan förekomma i dem.
Det hittades här:
https://jquery.com/browser-support/
Så jQuery är inte en lösning för alla och alla för bakåtkompatibilitet.
Följande lösning med rå JavaScript fungerar i alla webbläsare och har varit standard under lång tid så att du inte behöver några bibliotek för webbläsarstöd.
Den här sidan omdirigeras till Google efter 3000 millisekunder



 exempel 


Du kommer snart att omdirigeras till google.

setTimeout (funktion () { window.location.href = "http://www.google.com"; // Webbadressen som kommer att omdirigeras också. }, 3000); // Ju större nummer desto längre fördröjning. Olika alternativ är följande: window.location.href = "url"; // Simulerar normal navigering till en ny sida window.location.replace ("url"); // Tar bort aktuell URL från historiken och ersätter den med en ny URL window.location.assign ("url"); // Lägger till ny URL i historikstacken och omdirigerar till den nya URL: n window.history.back (); // Simulerar ett klick på bakåtknappen window.history.go (-1); // Simulerar ett klick på bakåtknappen window.history.back (-1); // Simulerar ett klick på bakåtknappen window.navigate ("page.html"); // Samma som window.location = "url" När du använder ersättare kommer tillbaka-knappen inte att gå tillbaka till omdirigeringssidan, som om den aldrig fanns i historien. Om du vill att användaren ska kunna gå tillbaka till omdirigeringssidan använder du window.location.href eller window.location.assign. Om du använder ett alternativ som låter användaren gå tillbaka till omdirigeringssidan, kom ihåg att när du öppnar omdirigeringssidan kommer den att omdirigera dig tillbaka. Så ta hänsyn till det när du väljer ett alternativ för din omdirigering. Under förhållanden där sidan bara omdirigeras när en åtgärd utförs av användaren kommer det att vara okej att ha sidan i bakåtknappshistoriken. Men om sidan omdirigerar automatiskt bör du använda ersätta så att användaren kan använda bakåtknappen utan att tvingas tillbaka till sidan som omdirigeringen skickar. Du kan också använda metadata för att köra en sidomdirigering enligt följande. META Uppdatera META Plats BASKapning Många fler metoder för att omdirigera din intet ont anande klient till en sida som de kanske inte vill gå finns på den här sidan (ingen av dem är beroende av jQuery): https://code.google.com/p/html5security/wiki/RedirectionMethods Jag vill också påpeka att folk inte gillar att bli omdirigerade slumpmässigt. Endast omdirigera människor när det är absolut nödvändigt. Om du börjar omdirigera människor slumpmässigt kommer de aldrig att gå till din webbplats igen. Nästa stycke är hypotetiskt: Du kan också bli rapporterad som en skadlig webbplats. Om det händer, när människor klickar på en länk till din webbplats kan användarens webbläsare varna dem för att din webbplats är skadlig. Vad som också kan hända är att sökmotorer kan börja släppa ditt betyg om människor rapporterar en dålig upplevelse på din webbplats. Läs Googles riktlinjer för webbansvariga om omdirigeringar: https://support.google.com/webmasters/answer/2721217?hl=sv&ref_topic=6001971 Här är en rolig liten sida som slänger dig ut ur sidan. Gå bort

Gå bort

setTimeout (funktion () { window.history.back (); }, 3000); Om du kombinerar de två sidsexemplen tillsammans skulle du ha en spädbarnslinga för att omdirigera detgaranterar att din användare aldrig vill använda din webbplats någonsin igen. | var url = 'asdf.html'; window.location.href = url; | Du kan göra det utan jQuery som: window.location = "http://din domän.com"; Och om du bara vill ha jQuery kan du göra det som: $ jq (fönster) .attr ("plats", "http://din domän.com"); | Detta fungerar med jQuery: $ (fönster) .attr ("plats", "http://google.fr"); | # HTML-sid omdirigering med jQuery / JavaScript-metod Prova den här exempelkoden: funktion YourJavaScriptFunction () { var i = $ ('# login'). val (); om (jag == 'logga in') window.location = "Login.php"; annan window.location = "Logout.php"; } Om du vill ange en fullständig URL som window.location = "www.google.co.in" ;. | Ursprunglig fråga: "Hur omdirigeras med jQuery?", Följaktligen implementerar svaret jQuery >> Gratis användningsfall. För att bara omdirigera till en sida med JavaScript: window.location.href = "/ contact /"; Eller om du behöver en fördröjning: setTimeout (funktion () { window.location.href = "/ contact /"; }, 2000); // Tid i millisekunder jQuery låter dig enkelt välja element från en webbsida. Du kan hitta vad du vill på en sida och sedan använda jQuery för att lägga till specialeffekter, reagera på användaråtgärder eller visa och dölja innehåll i eller utanför det element du har valt. Alla dessa uppgifter börjar med att veta hur man väljer ett element eller en händelse. $ ('a, img'). på ('klicka', funktion (e) { e.preventDefault (); $ (detta). animera ({ opacitet: 0 // Lägg lite CSS-animering här }, 500); setTimeout (funktion () { // OK, färdig jQuery-personal, låt oss omdirigera window.location.href = "/ contact /"; }, 500); }); Tänk dig att någon skrev ett skript / plugin med 10000 rader kod. Med jQuery kan du ansluta till den här koden med bara en rad eller två. | Du måste ange denna rad i din kod: $ (plats) .attr ("href", "http://stackoverflow.com"); Om du inte har jQuery, gå med JavaScript: window.location.replace ("http://stackoverflow.com"); window.location.href ("http://stackoverflow.com"); | Så frågan är hur man skapar en omdirigeringssida, och inte hur man omdirigerar till en webbplats? Du behöver bara använda JavaScript för detta. Här är en liten kod som skapar en dynamisk omdirigeringssida. var url = window.location.search.split ('url =') [1]; // Hämta webbadressen efter? Url = if (url) window.location.replace (url); Så säg att du bara lägger det här utdraget i en omdirigera / index.html-fil på din webbplats, du kan använda det så. http://www.mywebsite.com/redirect?url=http://stackoverflow.com Och om du går till den länken kommer den automatiskt att omdirigera dig till stackoverflow.com. Länk till dokumentation Och så skapar du en enkel omdirigeringssida med JavaScript Redigera: Det finns också en sak att notera. Jag har lagt till window.location.replace i min kod eftersom jag tycker att den passar en omdirigeringssida, men du måste veta att när du använder window.location.replace och du omdirigeras, när du trycker på bakåtknappen i din webbläsare kommer det inte kom tillbaka till omdirigeringssidan, och den kommer tillbaka till sidan innan den, ta en titt på den här lilla demo-saken. Exempel: Processen: lagra hem => omdirigera sida till google => google När du är på google: google => tillbaka-knappen i webbläsaren => lagra hem Så om detta passar dina behov ska allt vara bra. Om du vill inkludera omdirigeringssidan i webbläsarhistoriken, ersätt den if (url) window.location.replace (url); med if (url) window.location.href = url; | På din klickfunktion, lägg bara till: window.location.href = "Webbadressen som du vill omdirigera"; $ ('# id'). klicka på (funktion () { window.location.href = "http://www.google.com"; }); | Prova detta: location.assign ("http://www.google.com"); Kodavsnitt som exempel. | jQuery behövs inte. Du kan göra det här: window.open ("URL", "_ själv", "", "") Det är så enkelt! Det bästa sättet att initiera en HTTP-begäran är med document.loacation.href.replace ('URL'). | Skriv först ordentligt. Du vill navigera i en applikation för en annan länk från din ansökan om en annan länk. Här är koden: window.location.href = "http://www.google.com"; Och om du vill navigera i sidor i din applikation har jag också kod, om du vill. | Du kan omdirigera i jQuery så här: $ (plats) .attr ('href', 'http://yourPage.com/'); | Använda JavaScript: Metod 1: window.location.href = "http://google.com"; Metod 2: window.location.replace ("http://google.com"); Använda jQuery: Metod 1: $ (plats) $ (plats) .attr ('href', 'http://google.com'); Metod 2: Återanvändningsfunktion jQuery.fn.redirectTo = funktion (url) { window.location.href = url; } jQuery (fönster) .redirectTo ("http://google.com"); | I JavaScript och jQuery kan vi använda följande kod för att omdirigera en sida till en annan sida: window.location.href = "http://google.com"; window.location.replace ("page1.html"); | ECMAScript 6 + jQuery, 85 byte $ ({jQueryCode: (url) => location.replace (url)}). attr ("jQueryCode") ("http://exempel.com") Snälla döda intejag, det här är ett skämt. Det är ett skämt. Det här är ett skämt. Detta "gav ett svar på frågan", i den meningen att det frågade efter en lösning "med hjälp av jQuery" som i det här fallet innebär att det på något sätt tvingas in i ekvationen. Ferrybig behöver tydligen skämtet förklaras (skämtar fortfarande, jag är säker på att det finns begränsade alternativ på granskningsformuläret), så utan vidare: Andra svar använder jQuerys attr () på platsen eller fönsterobjekten i onödan. Detta svar missbrukar det också, men på ett mer löjligt sätt. I stället för att använda den för att ställa in platsen använder den attr () för att hämta en funktion som ställer in platsen. Funktionen heter jQueryCode även om det inte finns något jQuery om det, och att kalla en funktion somethingCode är bara hemskt, särskilt när något inte ens är ett språk. "85 byte" är en referens till Code Golf. Golf är uppenbarligen inte något du bör göra utanför kodgolf, och dessutom är detta svar helt klart inte golfat. I grund och botten, krypa. | Javascript: window.location.href = 'www.your_url.com'; window.top.location.href = 'www.your_url.com'; window.location.replace ('www.your_url.com'); Jquery: var url = 'www.your_url.com'; $ (plats) .attr ('href', url); $ (plats). prop ('href', url); // istället för plats kan du använda fönster | Här är en omdirigering för tidsfördröjning. Du kan ställa in fördröjningstiden till vad du vill: Din dokumenttitel fördröjning (8000)
Du omdirigeras om åtta sekunder!
| Det finns tre huvudsakliga sätt att göra detta, window.location.href = 'blaah.com'; window.location.assign ('blaah.com'); och... window.location.replace ('blaah.com'); Den sista är bäst, för en traditionell omdirigering, eftersom den inte sparar sidan du gick till innan den omdirigerades i din sökhistorik. Men om du bara vill öppna en flik med JavaScript kan du använda något av ovanstående EDIT: fönstrets prefix är valfritt. | 1 2 Nästa Inte svaret du letar efter? Bläddra bland andra frågor taggade javascript jquery omdirigera eller ställ din egen fråga.